#pragma once

#include <faker/engine/ui/SceneTreeNodeEditor.h>
#include <faker/engine/ui/EntityEditor.h>
#include <faker/engine/ui/FileSystemEditor.h>
#include <faker/engine/ui/SceneZmoEditor.h>
#include <faker/engine/ui/SceneLayer.h>
#include <faker/engine/ui/Signal.h>

#include <gut/Texture.h>

namespace Faker
{
    namespace Engine
    {
        namespace UI
        {

            struct Layout
            {

                Faker::Engine::UI::SceneTreeNodeEditor m_SceneTreeNodeEditor;
                Faker::Engine::UI::EntityEditor m_EntityEditor;
                Faker::Engine::UI::FileSystemEditor m_FileSystemEditor;
                Faker::Engine::UI::SceneZmoEditor m_SceneZmoEditor;
                Faker::Engine::UI::SceneLayer m_SceneLayer;

                void Instance();
                void HandleSignal();
                void SetSceneTexture(const Gut::Texture2D &sceneTexture);
                void SetSceneRef(Faker::Scene *sceneRef);
            };
        };
    }

};